<GRAMMAR LANGID="409">

  <DEFINE>
    <ID NAME="RID_tous_rule" VAL="1"></ID>
    <ID NAME="RID_Arithmetique" VAL="123"></ID>

    <ID NAME="RID_Operateur" VAL="36"></ID>
    <ID NAME="RID_Colon" VAL="37"></ID>
    <ID NAME="RID_Semicolon" VAL="39"></ID>
    <ID NAME="RID_Comma" VAL="40"></ID>
    <ID NAME="RID_Dot" VAL="41"></ID>
    <ID NAME="RID_Greater" VAL="48"></ID>
    <ID NAME="RID_Less" VAL="49"></ID>
    <ID NAME="RID_different" VAL="19"></ID>
    <ID NAME="RID_equal" VAL="20"></ID>

    <ID NAME="RID_integer" VAL="200"></ID>
    <ID NAME="RID_float" VAL="201"></ID>

    <ID NAME="RID_natural_number" VAL="101"></ID>
    <ID NAME="RID_cardinal" VAL="102"></ID>
    <ID NAME="RID_numeral_sign" VAL="103"></ID>
    <ID NAME="RID_digit_nonzero" VAL="104"></ID>
    <ID NAME="RID_teens" VAL="105"></ID>
    <ID NAME="RID_tensfrag" VAL="106"></ID>
    <ID NAME="RID_cardinal_1_to_99" VAL="107"></ID>
    <ID NAME="RID_cardinal_1_to_hundreds" VAL="108"></ID>
    <ID NAME="RID_cardinal_1_to_thousands" VAL="109"></ID>
    <ID NAME="RID_cardinal_1_to_millions" VAL="110"></ID>
    <!--<ID NAME="RID_cardinal_1_to_billions" VAL="111"></ID>
    <ID NAME="RID_cardinal_1_to_trillions" VAL="112"></ID>-->

  </DEFINE>

  <RULE NAME="tous_rule" ID="RID_tous_rule" TOPLEVEL="ACTIVE" DYNAMIC="TRUE">
    <L>

      <P>
        <L>
          <P DISP="ASS">ASSIGN</P>
          <P>ASS</P>
        </L>
        <O>
          <L>
            <P>
              <L>
                <P DISP="ADDR" >ADDRESS</P>
                <P>ADDR</P>
              </L>
              <L>
                <L>
                  <P DISP="R">RIGHT</P>
                  <P>R</P>
                </L>
                <L>
                  <P DISP="L">LEFT</P>
                  <P>L</P>
                </L>
              </L>
            </P>
            <P>DEGREE</P>
            <P>
              ITEM
              <O>
                with  <RULEREF NAME="integer"/>
                <L>
                  <P>argument</P>
                  <P>arguments</P>
                </L>
              </O>
            </P>
            <P>HEADER</P>
            <L>
              <P DISP="RS">RIGHT SON</P>
              <P>RS</P>
            </L>
            <L>
              <P DISP="LS">LEFT SON</P>
              <P>LS</P>
            </L>
            <L>
              <P>SON</P>
              <P DISP="SON">S</P>
            </L>
            <P>
              <L>
                <P DISP="INFO">INFORMATION</P>
                <P>INFO</P>
              </L>
            </P>
            <P>STRUCT</P>
            <L>
              <P>VALUE</P>
              <P DISP="VALUE">VALOR</P>
              <P DISP="VALUE">VALOUR</P>
            </L>
            <P>FATHER</P>
          </L>
        </O>
      </P>

      <P>
        ALEA
        <L>
          <P>STRING</P>
          <P>NUMBER</P>
        </L>
      </P>

      <P>
        ALLOC
        <L>
          <P>BLOCK</P>
          <P>STRUCT</P>
          <P>ARRAY</P>
          <P>CATE</P>
        </L>
      </P>

      <P>CALL</P>

      <P>
        INIT
        <L>
          <P>
            <L>
              <P>QUEUE</P>
              <P>STACK</P>
              <P>STRUCT</P>
              <P>ARRAY</P>
              <L>
                <P DISP="VECT">VECTOR</P>
                <P>VECT</P>
              </L>
            </L>
            <O>
              with  <RULEREF NAME="integer"/>
              <L>
                <P>argument</P>
                <P>arguments</P>
              </L>
            </O>
          </P>
          <P>NODE</P>
        </L>
      </P>


      <P>
        CREATE
        <L>
          <P>NODE</P>
          <P>
            <L>
              <P>
                <L>
                  <L>
                    <P>+B</P>
                    <P DISP="B">BIN</P>
                  </L>
                  <L>
                    <P>+M</P>
                    <P DISP="M">MARY</P>
                  </L>
                </L>
                <L>
                  <P>S</P>
                  <P DISP="S">SEARCH</P>
                </L>
                <L>
                  <P>T</P>
                  <P DISP="T">TREE</P>
                </L>
              </P>
              <P>QUEUE</P>
              <P>LIST</P>
              <P>BILIST</P>
              <P>STACK</P>
            </L>
            <O>
              with  <RULEREF NAME="integer"/>
              <L>
                <P>argument</P>
                <P>arguments</P>
              </L>
            </O>
          </P>
        </L>
      </P>

      <P>
        WRITE
        <L>
          <P>
            <O>
              with  <RULEREF NAME="integer"/>
              <L>
                <P>argument</P>
                <P>arguments</P>
              </L>
            </O>
          </P>
          <P>
            <O>
              <L>
                <L>
                  <P DISP="DIR">DIRECT</P>
                  <P>DIR</P>
                </L>
                <L>
                  <P DISP="SEQ">SEQUENCE</P>
                  <P>SEQ</P>
                </L>
              </L>
            </O>
          </P>
        </L>
      </P>

      <P>
        END
        <L>
          <P>FILE</P>
          <P>FOR</P>
          <P>IF</P>
          <P>WHILE</P>
        </L>
      </P>

      <P>
        <L>
          <P DISP="INFO">INFORMATION</P>
          <P>INFO</P>
        </L>
        <O>
          <L>
            <P DISP="R">RIGHT</P>
            <P>R</P>
          </L>
          <L>
            <P DISP="L">LEFT</P>
            <P>L</P>
          </L>
        </O>
      </P>

      <P>
        FREE
        <L>
          <P>NODE</P>
          <P>STRUCT</P>
          <P>ARRAY</P>
        </L>
      </P>

      <P>
        READ
        <L>
          <P>
            <O>
              with  <RULEREF NAME="integer"/>
              <L>
                <P>argument</P>
                <P>arguments</P>
              </L>
            </O>
          </P>
          <P>
            <O>
              <L>
                <L>
                  <P DISP="DIR">DIRECT</P>
                  <P>DIR</P>
                </L>
                <L>
                  <P DISP="SEQ">SEQUENCE</P>
                  <P>SEQ</P>
                </L>
              </L>
            </O>
          </P>
        </L>
      </P>

      <P>
        <P DISP=" ">-LOGICAL</P>
        <L>
          <P>NOT</P>
          <P>AND</P>
          <P>OR</P>
        </L>
      </P>

      <P>
        <P DISP=" ">INSERT</P>
        <L>
          <P>+FOR</P>
          <P>
            IF
            <O>ELSE</O>
          </P>
          <P>WHILE</P>
        </L>
      </P>

      <P>PREVIOUS</P>

      <P>
        ADD
        <L>
          <P>
            <RULEREF NAME="integer"/>
            <L>
              <P>argument</P>
              <P>arguments</P>
            </L>
          </P>
          <P>FILE</P>
          <P>Semi Colon To End Line</P>
        </L>
      </P>

      <P>
        NEXT
        <O>ARGUMENT</O>
      </P>

      <L>
        <P>VALUE</P>
        <P DISP="VALUE">VALOR</P>
        <P DISP="VALUE">VALOUR</P>
      </L>

      <P>
        <L>
          <L>
            <P>B</P>
            <P DISP="B">BIN</P>
          </L>
          <L>
            <P>M</P>
            <P DISP="M">MARY</P>
          </L>
        </L>
        <L>
          <P>S</P>
          <P DISP="S">SEARCH</P>
        </L>
        <L>
          <P>T</P>
          <P DISP="T">TREE</P>
        </L>
      </P>

      <P>
        STACK
        <L>
          <P>QUEUE</P>
          <P>EMPTY</P>
        </L>
      </P>

      <P>ITEM</P>

      <P>PUSH</P>

      <P>POP</P>

      <P>+ENQUEUE</P>

      <P>HEADER</P>

      <P>EXP</P>

      <P>FALSE</P>

      <P>RIGHT SON</P>

      <P>LEFT SON</P>

      <P>+DEQUEUE</P>

      <P>+DEGREE</P>

      <P>LENGTH</P>

      <P>MAX</P>

      <P>MIN</P>

      <P>MOD</P>

      <P>NIL</P>

      <P>OPEN</P>

      <P>FATHER</P>

      <P>CLOSE FILE</P>

      <P>STRUCT</P>

    </L>
  </RULE>

  <RULE NAME="Arithmetique" ID="RID_Arithmetique"  TOPLEVEL="ACTIVE" DYNAMIC="TRUE">
    <P>
      <RULEREF NAME="integer"/>
      <L>
        <P DISP="+">PLUS</P>
        <P DISP="/">DIVISE</P>
        <P DISP="*">TIMES</P>
        <P DISP="-">MINUS</P>
      </L>
      <L>
        <RULEREF NAME="integer"/>
        <RULEREF NAME="Arithmetique"/>
      </L>
    </P>
  </RULE>

  <RULE NAME="Operateur" ID="RID_Operateur"  TOPLEVEL="ACTIVE" DYNAMIC="TRUE">
    <L>
      <L>
        <P DISP="-">
          negative
        </P>
        <P DISP="-">
          minus
        </P>
        <P DISP="+">
          positive
        </P>
        <P DISP="+">
          plus
        </P>
        <P DISP="/">
          +divise
        </P>
        <P DISP="*">
          times
        </P>
      </L>
    </L>
  </RULE>

  <RULE NAME="Colon" ID="RID_Colon" TOPLEVEL="ACTIVE" DYNAMIC="TRUE">
    <P>+Colon</P>
  </RULE>

  <RULE NAME="Semicolon" ID="RID_Semicolon" TOPLEVEL="ACTIVE" DYNAMIC="TRUE">
    <P>Semicolon</P>
  </RULE>

  <RULE NAME="Comma" ID="RID_Comma" TOPLEVEL="ACTIVE" DYNAMIC="TRUE">
    <P>Comma</P>
  </RULE>

  <RULE NAME="Dot" ID="RID_Dot" TOPLEVEL="ACTIVE" DYNAMIC="TRUE">
    <P>Dot</P>
  </RULE>

  <RULE NAME="Greater" ID="RID_Greater" TOPLEVEL="ACTIVE" DYNAMIC="TRUE">
    <P>
      Greater
    </P>
    <P DISP=" ">
      Than
    </P>
    <O>
      <P DISP="=">Equal</P>
    </O>
  </RULE>

  <RULE NAME="Less" ID="RID_Less" TOPLEVEL="ACTIVE" DYNAMIC="TRUE">
    <P>
      Less
    </P>
    <P DISP=" ">
      Than
    </P>
    <O>
      <P DISP="=">Equal</P>
    </O>
  </RULE>

  <RULE NAME="different" ID="RID_different" TOPLEVEL="ACTIVE" DYNAMIC="TRUE">
    <P>+different</P>
  </RULE>

  <RULE NAME="equal" ID="RID_equal" TOPLEVEL="ACTIVE" DYNAMIC="TRUE">
    <P DISP=" = ">equal</P>
    <O>
      <P DISP=" ">to</P>
    </O>
  </RULE>

  <!--$integer._value: integer (Z) -->
  <RULE NAME="integer"  ID="RID_integer" TOPLEVEL="ACTIVE" DYNAMIC="TRUE">
    <P>
      <O>
        <RULEREF NAME="numeral_sign"/>
      </O>
      <P>
        <RULEREF NAME="natural_number"/>
      </P>
    </P>
  </RULE>

  <!--$integer._value: integer (Z) -->
  <RULE NAME="float"  ID="RID_float" TOPLEVEL="INACTIVE" DYNAMIC="TRUE">
    <P>
      <RULEREF NAME="integer"/>
      Dot
      <O>
        <RULEREF NAME="integer"/>
      </O>
    </P>
    <O>
      e
      <RULEREF NAME="integer"/>
    </O>
  </RULE>

  <!-- $natural_number._value: integer (N) -->
  <RULE NAME="natural_number"  ID="RID_natural_number" TOPLEVEL="INACTIVE">
    <P>
      <RULEREF NAME="cardinal"/>
    </P>
  </RULE>

  <!-- $natural_number._value: integer (N) -->
  <RULE NAME="cardinal"  ID="RID_cardinal" TOPLEVEL="INACTIVE">
    <L>
      <P>
        +zero
      </P>
      <P>
        <RULEREF NAME="cardinal_1_to_thousands"/>
      </P>
    </L>
  </RULE>

  <!-- $numeral_sign._value: {+,-} -->
  <RULE NAME="numeral_sign" ID="RID_numeral_sign" TOPLEVEL="INACTIVE">
    <L>
      <P DISP="-">
        negative
      </P>
      <P DISP="-">
        minus
      </P>
      <P DISP="+">
        positive
      </P>
      <P DISP="+">
        plus
      </P>
    </L>
  </RULE>

  <!-- $digit_nonzero._value: integer [1,9]-->
  <RULE NAME="digit_nonzero"  ID="RID_digit_nonzero" TOPLEVEL="INACTIVE">
    <L>
      <P>
        +one
      </P>
      <P>
        two
      </P>
      <P>
        three
      </P>
      <P>
        four
      </P>
      <P>
        five
      </P>
      <P>
        six
      </P>
      <P>
        seven
      </P>
      <P>
        eight
      </P>
      <P>
        nine
      </P>
    </L>

  </RULE>

  <!-- $teens._value: {10, 11, 12,..., 19} -->
  <RULE NAME="teens"  ID="RID_teens" TOPLEVEL="INACTIVE">
    <L>
      <P>
        ten
      </P>
      <P>
        eleven
      </P>
      <P>
        twelve
      </P>
      <P>
        thirteen
      </P>
      <P>
        fourteen
      </P>
      <P>
        fifteen
      </P>
      <P>
        sixteen
      </P>
      <P>
        seventeen
      </P>
      <P>
        eighteen
      </P>
      <P>
        nineteen
      </P>
    </L>
  </RULE>

  <!-- $tensfrag._value: {20, 30, 40,..., 90} -->
  <RULE NAME="tensfrag"  ID="RID_tensfrag" TOPLEVEL="INACTIVE">
    <L>
      <P>
        twenty
      </P>
      <P>
        thirty
      </P>
      <P>
        forty
      </P>
      <P>
        fifty
      </P>
      <P>
        sixty
      </P>
      <P>
        seventy
      </P>
      <P>
        eighty
      </P>
      <P>
        ninety
      </P>
    </L>
  </RULE>

  <!-- $cardinal_1_to_99._value: [1,99] -->
  <RULE NAME="cardinal_1_to_99"  ID="RID_cardinal_1_to_99" TOPLEVEL="INACTIVE">
    <L>
      <P>
        <RULEREF NAME="digit_nonzero"/>
      </P>
      <P>
        <RULEREF NAME="teens"/>
      </P>
      <P>
        <RULEREF NAME="tensfrag"/>
        <O>
          <RULEREF NAME="digit_nonzero"/>
        </O>
      </P>
    </L>
  </RULE>

  <!-- $cardinal_1_to_999._value: [1,999] -->
  <RULE NAME="cardinal_1_to_hundreds"  ID="RID_cardinal_1_to_hundreds" TOPLEVEL="INACTIVE">
    <L>
      <P>
        hundred
      </P>
      <P>
        <RULEREF NAME="digit_nonzero"/>
        hundred
      </P>
      <P>
        <RULEREF NAME="cardinal_1_to_99"/>
      </P>
      <P>
        <RULEREF NAME="digit_nonzero"/>
        hundred
        <O>
          and
        </O>
        <RULEREF NAME="cardinal_1_to_99"/>
      </P>

    </L>
  </RULE>

  <!-- $cardinal_1_to_999 999._value: [1,999 999] -->
  <RULE NAME="cardinal_1_to_thousands"  ID="RID_cardinal_1_to_thousands" TOPLEVEL="INACTIVE">
    <L>
      <P>
        thousand
      </P>
      <P>
        <RULEREF NAME="cardinal_1_to_hundreds"/>
        thousand
      </P>
      <P>
        <RULEREF NAME="cardinal_1_to_hundreds"/>
      </P>
      <P>
        <RULEREF NAME="cardinal_1_to_hundreds"/>
        thousand
        <RULEREF NAME="cardinal_1_to_hundreds"/>
      </P>
    </L>
  </RULE>

  <!-- $cardinal_1_to_999 999 999._value: [1,999 999 999] -->
  <RULE NAME="cardinal_1_to_millions"  ID="RID_cardinal_1_to_millions" TOPLEVEL="INACTIVE">
    <L>
      <P>
        million
      </P>
      <P>
        <RULEREF NAME="cardinal_1_to_hundreds"/>
        million
      </P>
      <P>
        <RULEREF NAME="cardinal_1_to_thousands"/>
      </P>
      <P>
        <RULEREF NAME="cardinal_1_to_hundreds"/>
        million
        <O>
          and
        </O>
        <RULEREF NAME="cardinal_1_to_thousands"/>
      </P>
    </L>
  </RULE>

  <!-- $cardinal_1_to_999 999 999 999._value: [1,999 999 999 999] -->
  <!--<RULE NAME="cardinal_1_to_billions"  ID="RID_cardinal_1_to_billions" TOPLEVEL="INACTIVE">
    <L>
      <P>
        billion
      </P>
      <P>
        <RULEREF NAME="cardinal_1_to_hundreds"/>
        billion
      </P>
      <P>
        <RULEREF NAME="cardinal_1_to_millions"/>
      </P>
      <P>
        <RULEREF NAME="cardinal_1_to_hundreds"/>
        billion
        <O>
          and
        </O>
        <RULEREF NAME="cardinal_1_to_millions"/>
      </P>
    </L>
  </RULE>-->

  <!-- $cardinal_1_to_999 999 999 999._value: [1,999 999 999 999 999] -->
  <!--<RULE NAME="cardinal_1_to_trillions"  ID="RID_cardinal_1_to_trillions" TOPLEVEL="INACTIVE">
    <L>
      <P>
        trillion
      </P>
      <P>
        <RULEREF NAME="cardinal_1_to_hundreds"/>
        trillion
      </P>
      <P>
        <RULEREF NAME="cardinal_1_to_billions"/>
      </P>
      <P>
        <RULEREF NAME="cardinal_1_to_hundreds"/>
        trillion
        <O>
          and
        </O>
        <RULEREF NAME="cardinal_1_to_billions"/>
      </P>
    </L>
  </RULE>-->

</GRAMMAR>